上一篇提到要將TextView、EditText、Button,這三個物件做結合製做出屬於自己的BMI計算機,這邊也歡迎各位可以先自己製作,之後再來參考看看我的寫法,我認為像這樣有個目標可以做,可以更加有效的增加寫程式的熟練度,事不宜遲下面就開始介紹怎麼做吧~
這邊附上這次的Github,我將java檔跟布局檔都放那裡了去尋找吧!
這次的設計我有簡單引用了Drawble資源,做一個簡單的外框稍微區分一下各個物件的位置,下面會大概介紹一下怎麼寫:
首先要新建一個Drawble資源
找到你的drawble
,按右鍵點選New
,選取Drawble Resource File
之後會跳出這個畫面
在File name:
填上檔案的名稱,這邊我是取border
,取完名後就可以按下OK
再來附上我的設定
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<stroke android:color="@color/black"
android:width="1dp"/>
<corners android:radius="3dp"/>
<size android:height="50dp"/>
</shape>
</item>
</selector>
item
定義了一個物件元素,其中有不少參數可以使用,例如之後實作中會使用到的state_selected
,這個可以設定物件在被選擇時
以及未被選擇時
的樣式,比如我可以讓一個物件選擇前是藍底黃字,選擇後變黃底藍字。shape
定義了一個物件的形狀,在這個定義之下有一些方法可供使用,這邊列舉幾個比較常看到的:solid
,可以設定物件背景填充顏色。stroke
,可以設定物件的邊框,有寬度、顏色、虛線可以使用。corners
,可以設定物件邊框的弧度,預設是設定四周,但是也可以選擇只設定一角。size
,可以調整這個框線的大小。引用的方法是在要引用的物件屬性那裡加上background = "@drawable/border"
,接著就可以看到你的物件多了一個外框囉~
這邊我就將我主要的部份貼上來,其他細節(宣告變數)就自己去Github翻吧。
calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
height = Float.valueOf(String.valueOf(editTextHeight.getText())) / 100;
weight = Float.valueOf(String.valueOf(editTextWeight.getText()));
sum = (float) (Math.round((weight / (height*height))*100)/100.0);
if(sum<18.5){
result.setText("體重過輕\n"+String.valueOf(sum));
} else if (sum >= 18.5 && sum < 24) {
result.setText("體重正常\n"+String.valueOf(sum));
}
else{
result.setText("體重過重\n"+String.valueOf(sum));
}
}
});
我的calculate
就是我的Button
,所以這就是按鈕的點擊事件,我在按鈕內寫入抓取高度、重量,然後用sum來存取根據高度和重量計算出的BMI
editTextHeight.getText()
這裡我將高度的那欄EditText的值取出,最後經過一震型態的轉換,僵直轉換成浮點數型態,後面我除以了100,是因為一般輸入身高時單位通常都是公分
,而BMI的計算方式身高是公尺,這邊就將值先轉成浮點數再除以一個100,達到換成公尺的效果,下面的重量也是差不多的寫法。sum
這裡我將高度跟重量根據BMI計算的方式計算出來,再用Math
的四捨五入的方法取到小數點第二位。RecyclerView
,這是在使用上很廣泛的一種顯示大量資料的方法。